package DAO;

import AccesoBD.AccesoBaseDatos;
import Dominio.ProgramaEducativo;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;

public class DAOAlumno_PE {
    private static final String TABLA_REL_ALUMNO_PE = "rel_alumno_PE";
    private static final String COLUMNA_Nombre_USR = "usuario_alumno";
    private static final String COLUMNA_CLAVE_PE = "clave_PE";
    
    private AccesoBaseDatos acceso = new AccesoBaseDatos();
    private Connection conexion = null;
    
    public DAOAlumno_PE(){
        this.conexion=this.acceso.abrirConexion();
    }
    
    public void registrarAlumnoAPE(int clvCuentaAlumno,int clvPE){
        try{
            Statement sentencia = acceso.crearSentenciaBD(conexion);
            //String query = "INSERT INTO "+TABLA_REL_ALUMNO_PE+" ("+COLUMNA_Nombre_USR+","+COLUMNA_CLAVE_PE+") VALUES ('"
            //        + clvCuentaAlumno+"','"+clvPE+"') ON DUPLICATE KEY UPDATE "+COLUMNA_CLAVE_PE+"=VALUES('"+clvPE+"');";
            String query = "INSERT INTO "+TABLA_REL_ALUMNO_PE+" ("+COLUMNA_Nombre_USR+","+COLUMNA_CLAVE_PE+") VALUES ('"
                    + clvCuentaAlumno+"','"+clvPE+"');";
            sentencia.executeUpdate(query);
        }catch(SQLException ex) {
            System.err.println("Problemas de SQL:\n" + ex.toString());
        }
    }
    
    public void cerrarConexionAReticulaAcademica(){
        acceso.cerrarConexion(conexion);
    }
    
   public void actualizarPE(String nombreUsr,int nuevoPE){
       try{
           Statement sentencia = acceso.crearSentenciaBD(conexion);
           String query="UPDATE "+TABLA_REL_ALUMNO_PE+" SET "+COLUMNA_CLAVE_PE+"='"+nuevoPE+"' WHERE "
                   +COLUMNA_Nombre_USR+"='"+nombreUsr+"';";
           sentencia.executeUpdate(query);
       }catch(SQLException ex) {
            System.err.println("Problemas de SQL:\n" + ex.toString());
        }
   }
   
   /*
   public void registrarSemestre(String nombreUsr,int semestre){
       try{
        Statement sentencia = acceso.crearSentenciaBD(conexion);
        String queryInsert="INSERT INTO "+TABLA_REL_ALUMNO_PE+"("+COLUMNA_Nombre_USR+","+COLUMNA_SEMESTRE+") VALUES ('"
                +nombreUsr+"','"+semestre+"') ON DUPLICATE KEY UPDATE "+COLUMNA_SEMESTRE+"= VALUES('"+semestre+"');";
        sentencia.executeUpdate(queryInsert);
       }catch(SQLException ex) {
            System.err.println("Problemas de SQL:\n" + ex.toString());
        }
   }
    
   public void actualizarSemestre(String nombreUsr, int nuevoSemestre){
       try{
           Statement sentencia = acceso.crearSentenciaBD(conexion);
           String query="UPDATE "+TABLA_REL_ALUMNO_PE+" SET "+COLUMNA_SEMESTRE+"='"+nuevoSemestre+"' WHERE "
                   +COLUMNA_Nombre_USR+"='"+nombreUsr+"';";
           sentencia.executeUpdate(query);
       }catch(SQLException ex) {
            System.err.println("Problemas de SQL:\n" + ex.toString());
        }
   }*/
   public ProgramaEducativo getProgramaEducativoAlumno(String nombreUsr){
       ProgramaEducativo pe;
        try {
            DAOProgramaEducativo daope = new DAOProgramaEducativo();
            String getClvPE = "SELECT "+COLUMNA_CLAVE_PE+" FROM "+TABLA_REL_ALUMNO_PE+" WHERE "+COLUMNA_Nombre_USR+"='"+nombreUsr+"'";
            Statement sentencia = acceso.crearSentenciaBD(conexion);
            ResultSet resultado = sentencia.executeQuery(getClvPE);
            if(resultado.getRow()!=0){
                int clvPE = resultado.getInt(1);
                pe = daope.buscarPrograma(clvPE);
                return pe;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DAOAlumno_PE.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
   }
   
   public void eliminarRelacionAlumnoPE(int claveInformacionAlumno){
        try {
            Statement sentencia = acceso.crearSentenciaBD(conexion);
            String queryEliminacion = "DELETE FROM "+TABLA_REL_ALUMNO_PE+" WHERE "+COLUMNA_Nombre_USR+" = '"+claveInformacionAlumno+"';"; 
            sentencia.executeUpdate(queryEliminacion);
        } catch (SQLException ex) {
            Logger.getLogger(DAOAlumno_PE.class.getName()).log(Level.SEVERE, null, ex);
        }
   }
}
